(function () {
  //  描述一个对象的类型：自定义类型
  type myType = {
    // 应该具有的属性
    name: string;
    age: number;
    // 应该具有的方法
    getAge(): number;
  };

  const obj1: myType = {
    name: "张三",
    age: 18,
    getAge() {
      return this.age;
    },
  };

  // 接口就是用来定义一个类的结构，类中包含哪些属性和方法
  interface myInterface {
    // 应该具有的属性
    name: string;
    age: number;
    // 应该具有的方法
    getAge(): number;
  }

  interface myInterface {
    // 新增的属性
    sex: string;
  }

  // 接口做为自定义类型使用
  const obj2: myInterface = {
    name: "李四",
    age: 20,
    sex: "男",
    getAge() {
      return this.age;
    },
  };

  // 使用接口来限制类的结构，实现了该接口的类必须要满足接口定义的属性和方法
  interface myInter {
    name: string;
    asyHello(): void;
  }

  // 实现接口就是使类满足接口的要求
  class Myclass implements myInter {
    name: string;
    constructor(name: string) {
      this.name = name;
    }
    asyHello() {
      console.log("hello");
    }
  }
})();
